package br.com.salao.rest;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.apache.commons.lang.StringUtils;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

import br.com.salao.bean.Login;
import br.com.salao.bean.Usuario;
import br.com.salao.model.LoginModel;
import br.com.salao.model.UsuarioModel;

@Path("/usuario")
public class UsuarioService {

	@GET
	@Path("/cpf/{cpf}")	
	@Produces({MediaType.APPLICATION_JSON})
	public Usuario buscarUsuarioPeloCpf(@PathParam("cpf")String cpf){

		Usuario usuario = new Usuario();
		usuario.setCpf(cpf);

		UsuarioModel model = new UsuarioModel();
		return model.buscarUsuarioPeloCpf(usuario);
	}

	@GET
	@Path("/email/{email}")	
	@Produces({MediaType.APPLICATION_JSON})
	public Usuario buscarUsuarioPeloEmail(@PathParam("email")String email){

		Usuario usuario = new Usuario();
		usuario.setEmail(email);

		UsuarioModel model = new UsuarioModel();
		return model.buscarUsuarioPeloEmail(usuario);
	}

	@POST
	@Path("/post")
	@Consumes("application/json")
	public Response createProductInJSON(@PathParam("nome_usuario") String nome,
			@PathParam("sobrenome_usuario") String sobrenome,
			@PathParam("email_usuario") String email,
			@PathParam("cpf_usuario") String cpf,
			@PathParam("rg_usuario") String rg,
			@PathParam("login_usuario") String login,
			@PathParam("senha_usuario") String senha
	) {

		String result = "Received: " + nome + " " + sobrenome + " " + login;
		return Response.status(201).entity(result).build();

	}


	@GET
	@Path("/usuario/salvar/{user}")	
	@Produces({MediaType.APPLICATION_JSON})
	public Map<String, Boolean> salvar(@PathParam("user") String userJson) throws JSONException {

		Map<String, Boolean> map = new HashMap<String, Boolean>();

		JSONObject jobj = new JSONObject(userJson);

		String nome = jobj.getString("nome");		
		String sobrenome = jobj.getString("sobrenome");
		String rg = jobj.getString("rg");
		String cpf = jobj.getString("cpf");
		String email = jobj.getString("email");
		String identificador = jobj.getString("identificador");
		String login = jobj.getString("login");
		String senha = jobj.getString("senha");

		if(StringUtils.isEmpty(nome) || StringUtils.isEmpty(sobrenome) || StringUtils.isEmpty(rg) || StringUtils.isEmpty(cpf) || StringUtils.isEmpty(email)){
			map.put("return", false);
		}else{				

			try{
				Usuario usuario = new Usuario();
				usuario.setNome(nome);
				usuario.setSobrenome(sobrenome);
				usuario.setIdentificador(2);
				usuario.setCpf(cpf);
				usuario.setRg(rg);
				usuario.setEmail(email);
				usuario.setIdentificador(Integer.parseInt(identificador));

				UsuarioModel usuarioModel = new UsuarioModel();
				Usuario user = usuarioModel.inserir(usuario);

				Login objLogin = new Login();
				objLogin.setUsuario(user);
				objLogin.setAtivo(true);
				objLogin.setAcesso("USER");
				objLogin.setDataAtual(new Date());
				objLogin.setLogin(login);
				objLogin.setSenha(senha);
				LoginModel loginModel = new LoginModel();
				loginModel.inserir(objLogin);

				map.put("return", true);

			}catch (Exception e) {

				map.put("return", false);
				e.printStackTrace();
			}
		}
		return map;
	}
}
